package org.geometerplus.zlibrary.core.network;

import org.geometerplus.zlibrary.core.util.MimeType;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

public abstract class ZLNetworkRequest {
	String URL;
	public final String PostData;
	public final Map<String,String> PostParameters = new HashMap<String,String>();
	public final MimeType Mime;

	private final boolean myIsQuiet;

	protected ZLNetworkRequest(String url) {
		this(url, false);
	}

	protected ZLNetworkRequest(String url, boolean quiet) {
		this(url, null, quiet);
	}

	protected ZLNetworkRequest(String url, String postData, boolean quiet) {
		this(url, MimeType.NULL, postData, quiet);
	}

	protected ZLNetworkRequest(String url, MimeType mime, String postData, boolean quiet) {
		URL = url;
		Mime = mime;
		PostData = postData;
		myIsQuiet = quiet;
	}

	public void addPostParameter(String name, String value) {
		PostParameters.put(name, value);
	}

	public String getURL() {
		return URL;
	}

	public boolean isQuiet() {
		return myIsQuiet;
	}

	public void doBefore() throws ZLNetworkException {
	}

	public abstract void handleStream(InputStream inputStream, int length) throws IOException, ZLNetworkException;

	public void doAfter(boolean success) throws ZLNetworkException {
	}
}
